FCurve

Object Hierarchy | 関連する C++クラス:FCurve

継承

SIObject

AnimationSource

FCurve

導入

v1.0

詳細

FCurve(ファンクションカーブ)オブジェクトは、Softimage のFCurve 属性の取得と設定、およびFCurveキーの作成、取得、修正、削除を実行する関数のセットへのアクセスを提供します。

F カーブは、Parameter.AddFCurve2メソッドおよびParameter.AddFCurveメソッドによりパラメータを作成し、接続することができます。Parameter上の既存のFCurve にアクセスする場合は、Parameter.Sourceメソッドを使用します。F カーブは、siDouble、siFloat、siInt4、siInt2、siByte、siUInt4、siUInt2、および SiUByte(これらのパラメータの定義についてはsiVariantTypeを参照)でサポートされています。

FCurveKeyを定義すると、キーの値は、キーの値の型の条件と一致するように調整されます。ブール型、整数型のFCurve では、この値は切り捨て処理されます。たとえば、値3.5を整数のFCurve に指定すると、3になります。ブールFCurve では、0 以外の値は trueとして解釈されます。

SIObject.Parentは、FCurve の親を戻します。パラメータに接続する F カーブでは、Parameterオブジェクトが親と見なされます。ActionSourceオブジェクトに含まれる F カーブでは、AnimationSourceItemオブジェクトが親となります。

注 : 詳細については、Softimage ユーザ ガイドの「F カーブの補間および外挿」を参照してください。

メソッド

AddKey BeginEdit EndEdit Eval
ExtendCycle Fit GetKey GetKeyAtIndex
GetKeyFrame GetKeyIndex GetKeyValue GetKeysBetween
GetMaxKeyFrame GetMaxKeyValue GetMidKeyFrame GetMidKeyValue
GetMinKeyFrame GetMinKeyValue GetNumKeys InsertKeyAtFrame
IsClassOfオペレータ IsEditing IsEqualToオペレータ KeyExists
MakeRotationsContinuous Offset OffsetKeys RemoveKey
RemoveKeyAtIndex RemoveKeys RemoveKeysAtIndex Resample
Scale ScaleKeys Set SetKey
SetKeyTangents SetKeys Smooth SnapToNearestFrame
UndoEdit      
       

プロパティ

Application Categories DependsOnFrameRate Extrapolation
FullNameオペレータ Help HighClamp Interpolation
Keys Locked LowClamp Mute
Nameオペレータ NestedObjects NoKeyValue Origin
OriginPath Parent SI3DStyle Selected
SelectedKeys Type Typeオペレータ  
       

1. JScript の例

/*
        This example demonstrates how to get the parent of an fcurve.
*/ 
// Set up the scene with a custom pset on a null
NewScene( null, false );
var n = ActiveSceneRoot.AddNull();
var pset = n.AddCustomProperty( "CustomPSet" );
var x = pset.AddParameter3( "X", siDouble, 0, 0, 100 );
LogMessage( "x value = " + x.value, siInfo )
LogMessage( "x min/max = " + x.min + ", " + x.max, siInfo )
// Set an fcurve on the custom parameter
var fc = x.AddFCurve2( null, null );
var param = fc.Parent;
LogMessage( "parent of fcurve = " + param.FullName, siInfo );
LogMessage( "param isequal to x = " + param.IsEqualTo(x), siInfo );
// Outputs:
//INFO : "x value = 0"
//INFO : "x min/max = 0, 100"
//INFO : "parent of fcurve = null.CustomPSet.X"
//INFO : "param isequal to x = true"

2. VBScript の例

' ==========================================================================
'   This part of the script just sets up the sphere, curve, and the path
'   constraint between them.
' --------------------------------------------------------------------------
' Set up scene context
Set oRoot = ActiveSceneRoot
' Create sphere that will be animated with path constraint
Set oSphere = oRoot.AddGeometry( "Sphere", "MeshSurface" )
' Create curve for path constraint
Set oCrv = SICreateCurve( "crvlist", 3, 0 )
SIAddPointOnCurveAtEnd oCrv, _
        -7.87711815167134, -1.9399113143663, 0.193991131436629, False
SIAddPointOnCurveAtEnd oCrv, _
        8.74360114835504, -5.93730432578764, 0.593730432578766, False
SIAddPointOnCurveAtEnd oCrv, _
        7.60141901636287, 5.15350177452872, -0.515350177452866, False
SIAddPointOnCurveAtEnd oCrv, _
        -6.30169452133709, 5.03593139183983, -0.50359313918398, False
SIAddPointOnCurveAtEnd oCrv, _
        2.71760576232661, -6.21163521872843, 0.621163521872845, False
' Apply path constraint to sphere 
SelectObj oSphere, , True
ApplyPath oSphere, oCrv, 10.0, 95.5, 2, False, False

' ==========================================================================
'   This part of the script finds the existing fcurve & gets the time in 
'   frames of the first and last key.
' --------------------------------------------------------------------------
' Get all the meshes under the root
Set oMeshes = oRoot.FindChildren(,,siMeshFamily)
LogMessage "Number of meshes found: " & oMeshes.Count
' Iterate over the meshes to find the one with the fcurve
For Each s In oMeshes
        ' Get the path constraint on the object
        Set oCns = s.Kinematics.Constraints("PathCns")
        ' Just to make sure script doesn't crash if not found
        If oCns <> "Nothing" Then
                ' Getting path percentage to check that it's ok
                LogMessage "Path percentage = " & oCns.perc.Value
                ' Get fcurve attached to path percentage
                Set oFCurve = oCns.perc.Source
                ' Getting first & last curves on source
                If oFCurve.Keys.Count > 0 Then
                        dFCKeyA = oFCurve.Keys(0).Time
                        dFCKeyZ = oFCurve.Keys(oFCurve.Keys.Count - 1).Time
                        ' Print values
                        LogMessage "First key in time is at frame " & dFCKeyA
                        LogMessage "Last key in time is at frame " & dFCKeyZ
                End If
        End If
Next
' Output of above script is:
' --------------------------
'INFO : "Number of meshes found: 1"
'INFO : "Path percentage = 100"
'INFO : "First key in time is at frame 4.126"
'INFO : "Last key in time is at frame 90.274"

3. VBScript の例

' 
' This example manipulates the FCurve that drives a Linked Parameter
' 
dim oControlPSet, oControlledPSet
set oControlPSet = ActiveSceneRoot.AddProperty( "CustomProperty", false, "ControlPSet" )
oControlPSet.AddParameter2 "LinkSrc", siInt4, 5, 0, 20, 0, 20, 0, siAnimatable 
set oControlledPSet = ActiveSceneRoot.AddProperty( "CustomProperty", false, "ControlledPSet" )
oControlledPSet.AddParameter2 "LinkDest", siInt4, 5, 0, 20, 0, 20, 0, siAnimatable 
'Create linked parameter
SetExpr "ControlledPSet.LinkDest", "l_fcv( ControlPset.LinkSrc )"
'Important: This is how you get to the FCurve so you can
'create the specific relationship
dim oFCurve, oExpr      
set oExpr = oControlledPSet.Parameters( "LinkDest" ).Source                     
set oFCurve = oExpr.Parameters( "l_fcv" ).Source
oFCurve.BeginEdit
oFCurve.RemoveKeys
oFCurve.Interpolation = siLinearInterpolation
'Important: Linked fcurves are time independant.  So the in_Frame value is
'used directly as input (i.e. no conversion from frames to seconds is done).
'When linksrc is 0 then linkdest is 0
oFCurve.AddKey 0, 1
'when linksrc is 1 then linkdest is 3
oFCurve.AddKey 1, 3
'when linksrc is 2 then listdest is 2
oFCurve.AddKey 2, 2
'When linksrc is 10 the listdest is 20
oFCurve.AddKey 10, 20
oFCurve.EndEdit
'Demonstrate the relationship
oControlPSet.LinkSrc.Value = 1
Logmessage oControlledPSet.LinkDest.Value 
oControlPSet.LinkSrc.Value = 10
Logmessage oControlledPSet.LinkDest.Value 
'Expected results:
'INFO : 3
'INFO : 20

関連項目

FCurveKey FCurveKeyCollection Parameter.AddFCurve GetFCurveInfo Parameter AnimationSourceItem Parameter.Max Parameter.Source CustomProperty.AddFCurveParameter PPGLayout.AddFCurve Sequence ScaleAndOffset ActivateFCurve CopyAnimation